﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Collections.Specialized;
using System.Data.SqlClient;
using System.Security.Cryptography;

namespace GestorDeFlotasDesktop
{
    public class MasterPage : Form
    {
       public StringCollection paramsNames( params string[] paramsName){

           StringCollection parametros = new StringCollection();

           foreach (string elem in paramsName)
           {
               
               parametros.Add(elem);
           }

           return parametros  ;
       }
       public ArrayList paramsValues(params object[] paramsValue)
       {

           ArrayList parametrosValue = new ArrayList();

           foreach (object elem in paramsValue)
           {
               parametrosValue.Add(elem );
           }

           return parametrosValue;
       }

        
        public void showForm(Form FormHijo)
        {
            FormHijo.ShowDialog();
        }


        public void initialize( Form vPadreParametro, ref Form ventanaPadre)
        {

            ventanaPadre = vPadreParametro;


        }



        private void MasterPage2_Load(object sender, EventArgs e)
        {

        }

        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // MasterPage2
            // 
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Name = "MasterPage2";
            this.Load += new System.EventHandler(this.MasterPage2_Load_1);
            this.ResumeLayout(false);

        }

        private void MasterPage2_Load_1(object sender, EventArgs e)
        {

        }
  
        public void setearCheckBox(int posicion, ArrayList array, DataGridView dataGridView1,  Panel panel  ,Button btAlta )
        {
            // Todos los abms comunes, tiene algun panel oculto que solo se visualizara si el check esta activado.
            // este metodo  activa o desactiva el check. 
            // Debido a que no hay una manera linda de tratar cada check del datagrid  por separado y poder contral si esta activado o no, se utiliza una coleccion de numero de fila
            // Si el numero de fila aparece en la coleccion , significa que el check esta activo, otherwise esta deasctivado. 

            if (array.Contains(posicion))
            {
                dataGridView1.Rows[posicion].SetValues(bool.FalseString);
                array.Remove(posicion);
                btAlta.Text = "Alta";
                if (panel != null)
                {
                    panel.Visible = false;
                  
                }
            }

            else
            {
                dataGridView1.Rows[posicion].SetValues(bool.TrueString);

                array.Add(posicion);
                btAlta.Text = "Confirmar";
                if (panel != null)
                {
                    panel.Visible = true;
                                        
                }

            }

            
            
            
            }
   
        public void ocultarMenu(ref Form ventanaPadre, Form ventaPadreParametro) {

            ventanaPadre = ventaPadreParametro;
            ventanaPadre.Visible = false;
            
        }

        public void   mensajeUpdate() {
          
                MessageBox.Show("Los datos se modificaron correctamente "); 
           
        }

        public void mensajeInsert()
        {

            MessageBox.Show(" El alta se ha realizado exitosamente   ");

        }
        public void mensajeError()
        {

            MessageBox.Show(" Ha ocurrido un error\n Vuelva a intentarlo por favor");

        }
        public void mensajeDelete( int value )
        {
            if (value == 0)
            {
                MessageBox.Show(" La Baja se ha realizado exitosamente  ");
            }
            else
            {
                MessageBox.Show("La reactivacion fue  correcta");
            }
            }

        public  ArrayList parametrosStoredProcedure(StringCollection names, ArrayList values)
        {
            ArrayList parametrosSql = new ArrayList();

            for (int i = 0; i < names.Count && i < values.Count; i++)
            {
                parametrosSql.Add(new SqlParameter(names[i], values[i]));
            }
            return parametrosSql;
        }
        public  byte[] encriptar(string passw)
        {   SHA256Managed password = new SHA256Managed();
            byte[] texto = System.Text.Encoding.ASCII.GetBytes(passw);
            byte[] textocifrado = password.ComputeHash(texto);
            return textocifrado;
        }
        public  Boolean confirmarOperacion(DataTable resultado)
        {
            return (Convert.ToString(resultado.Rows[0].ItemArray[0]) == "ok") || (Convert.ToString(resultado.Rows[0].ItemArray[0]) == "OK");

        }
                
        }

    }

